#include  <stdint.h>
#include  "mid_lcd.h"
#include  "mid_key.h"
#include  "mid_beep.h"
#include  "mid_bus.h"
#include  "mid_timer.h"
#include	"driver.h"
#include  "app.h"


static void disp_ui_v(uint8 dis1, uint8 dis2, uint8 dis3)
{
		if(UIoperate.CodeFlag)
			mid_lcdbianma(DISPON);
		else
			mid_lcdbianma(DISPOFF);

		if(UIoperate.SetFlag)
			mid_lcdshezhi(DISPON);
		else
			mid_lcdshezhi(DISPOFF);		
		
		if(UIoperate.Wrong)
			mid_lcdcuowu(DISPON);
		else
			mid_lcdcuowu(DISPOFF);		

	  if(UIoperate.LockFlag)
			mid_lcdsuoding(DISPON);
		else
			mid_lcdsuoding(DISPOFF);			
		
	  if(UIoperate.ContinuesFlag)
			mid_lcdlianxu(DISPON);
		else
			mid_lcdlianxu(DISPOFF);

		if(UIoperate.Chongdian)
			mid_lcdchongdian(DISPON);
		else
			mid_lcdchongdian(DISPOFF);
		
	  if(UIoperate.Correct)
			mid_lcdzhengque(DISPON);
		else
			mid_lcdzhengque(DISPOFF);		
		if(UIoperate.Addr)
			mid_lcddizhi(DISPON);
		else
			mid_lcddizhi(DISPOFF);
		if(UIoperate.RdFlag)
			mid_lcdduchu(DISPON);
		else
			mid_lcdduchu(DISPOFF);
		if(UIoperate.WrFlag)
			mid_lcdxieru(DISPON);
		else
			mid_lcdxieru(DISPOFF);
		
		mid_lcddisp_line2(dis1, dis2, dis3);
		UIpos[0] = 15;//F
		UIpos[1] = UIoperate.NowSet/10;//
		UIpos[2] = UIoperate.NowSet%10;//		
	  mid_lcddisp_line1(UIpos[0], UIpos[1], UIpos[2]);
	
		mid_lcdp4(DISPON);
		//mid_lcdp1(DISPON);
		strLcdD.frush = 1;		

}
			 
			 
void UI_ReadHard_Ver(void)
{
			cmdPROBUF tmp;			
      if(GetKey(KEY_PRESS_UP))   
			{						
							BEEP_ON();
							UIoperate.Wrong = 0;
							UIoperate.TestFlag = 0;
							UIoperate.Data = 0;
							UIoperate.Correct = 0;
							UIoperate.Addr = 0;
							UIoperate.RdFlag = 0;
							UIoperate.WrFlag = 0;	
							switch (valuekey.val)
							 {
									case 0x21:										//READ     
											BUS_WORK();
											Voltage_time = 8;
											delay_ms(30);																					
											tmp.ch = 0;
											tmp.cmd = 0x27;
											tmp.addr = 0;
											write_cmfbuf(&tmp);
											write_cmfbuf(&tmp);
											UIoperate.LastOperate = 0;
											ADDR[0]=ADDR[1]=ADDR[2]=0;
											UIposition = 0;
											disp_ui_v(0 ,ReadHard_Ver/16, ReadHard_Ver%16);	
											
											
											break;									
									
									case 0x23:     								//0
									case 0x31:     								//7
									case 0x33:   									//8
									case 0x35:    								//9
									case 0x41:      							//4
									case 0x43:      							//5
									case 0x45:      							//6
									case 0x53:      							//2										
									case 0x55:      							//3
									case 0x51:      							//1	
										
										
											
//												ADDR[UIposition++] = ConvertKey(valuekey.val);		
//												if(UIposition == 1)
//												{
//													UIpos[3] = 0;
//													UIpos[4] = 0;
//													UIpos[5] = ADDR[UIposition - 1];
//												}else if(UIposition == 2)
//												{											
//													UIpos[3] = 0;
//													UIpos[4] = ADDR[UIposition - 2];
//													UIpos[5] = ADDR[UIposition - 1];
//												}else if(UIposition == 3)
//												{													
//													UIpos[3] = ADDR[UIposition - 3];	
//													UIpos[4] = ADDR[UIposition - 2];
//													UIpos[5] = ADDR[UIposition - 1];
//													ADDR[0]=ADDR[1]=ADDR[2]=0;
//													UIposition = 0;
//												}												
//											
//												ReadVPT = UIpos[3]*100 + UIpos[4]*10 + UIpos[5];

//											
//												disp_ui_v( UIpos[3], UIpos[4], UIpos[5]);	
												break;											
											
									case 0x25:     								//WRITE		
												break;											
											
									case 0x27:     
												break;

									case 0x37:      							//LIGHT									 
												if(UIoperate.Backlight == 0)
												{
													UIoperate.Backlight = 1;
													LCDBLACKON(); 
												}
												else
												{
													UIoperate.Backlight = 0;
													LCDBLACKOFF();											 
												}
												break;

									case 0x47: 										//TEST
												UINUM = 1;						
												break;								
								
									case 0x57: 					 					//SET
												UINUM = 13;										 
												break;									
									
									case 0x11: 					 					//ESC
												UINUM = 12;
												break;
									
									case 0x13: 					 					//CONTINUE
												break;
									
									case 0x15: 					 					//OK
												break;
									
									case 0x17: 					 					//CODE											
												UINUM = 2;
												break;				 
							 }			 											
	}
	
		if(strLcdD.UIinit)
		{
			strLcdD.UIinit = 0;
			UIoperate.Correct = 0;
			UIoperate.ContinuesFlag = 0;
			UIoperate.Wrong = 0;
			UIoperate.Addr = 0;
			UIoperate.TestFlag = 0;
			UIoperate.Data = 0;
			UIoperate.Chongdian = 1;
			UIoperate.SetFlag = 1;
			UIoperate.CodeFlag = 0;
			UIoperate.LockFlag = 1;
      UIoperate.NowSet = 10;
			UIoperate.RdFlag = 0;
			UIoperate.WrFlag = 0;
			ReadVer = 0;
			UIpos[3] = 0;
			UIpos[4] = 0;
			UIpos[5] = 0;
			ADDR[0]=ADDR[1]=ADDR[2]=0;
		}
		
		disp_ui_v(0 ,ReadHard_Ver/16, ReadHard_Ver%16);	
		strLcdD.UIfresh = 0;	
				
	}

